##导入系统模块
import  os
##导入tk模块
import tkinter as tk
import tkinter.messagebox
##导入爬虫模块
import requests
##导入图片模块
from PIL import Image, ImageTk
#导入设置保存路径模块
import seclect_folders
from tkinter import filedialog
from tkinter import messagebox

########################################################
"""
1.创建主窗口
2.这是窗口标题
3.将图片设置为窗口背景
"""
win = tk.Tk()
win.title("一个闹着玩的爬虫")
canvas = tk.Canvas(win, width=600, height=400, bd=0, highlightthickness=0)
impath='timg.jpg'
img= Image.open(impath)
photo = ImageTk.PhotoImage(img)
canvas.create_image(540, 400, image=photo)
canvas.pack()
###########################################################

"""
1.创建菜单条
2.配置
3.点击菜单选项要执行的方法
4.创建一个菜单选项
"""
menubar = tk.Menu(win)
win.config(menu=menubar)
label = tkinter.Label(win, text="")
label.pack()
menu1 = tkinter.Menu(menubar, tearoff=False)#tearoff  设置为True时，表明这个菜单是可以独立出来的，设置为False时，菜单不可独立,默认时是True


def open_dir():
    pass
    # if not os.path.exists(path2):  # 判断追加目录是否存在
    #     os.mkdir(path2)  # 创建追加目录
    # os.system("start  explorer %s" % path2)  # 打开目录


def set_defau_dir():
    seclect_folders.set_defau_dir()  # 设置默认目录
#给文件菜单选项添加内容
list1 = ["打开文件保存目录", "设置文件保存路径", "Exit"]
for item in list1:
    if item == "Exit":
        menu1.add_separator()
        menu1.add_command(label=item,command=win.quit)
    elif item == "打开文件保存目录" :
        menu1.add_command(label=item, command=open_dir)
    elif item == "设置文件保存路径":
        menu1.add_command(label=item, command=set_defau_dir)

#3向菜单条上添加菜单选项
menubar.add_cascade(label="文件", menu=menu1)
#再创建一个关于菜单选项
menu2 = tkinter.Menu(menubar,tearoff=False)
menubar.add_cascade(label="关于", menu=menu2)
menu2.add_command(label="检查更新")
menu2.add_command(label="关于作者")
def start_git():
    os.system("python git.py")
menu2.add_command(label="访问此项目Git主页", command=start_git)





##设置程序界面信息
tk.Label(win, text="要爬取的图片URL：   ",font=("宋体",15)).place(x=60, y=90, height=30, width=200)#x与y的数值为坐标轴
tk.Label(win, text="将图片重命名为：   ",font=("宋体",15)).place(x=60, y=150, height=30, width=200) #x与y的数值为坐标轴


##设置URL输入框
var_urls_path = tk.StringVar()#设置用户名函数类型为字符串
var_file_name = tk.StringVar()

#URL输入框默认信息
var_urls_path.set('https://attach.bbs.miui.com/forum/201906/05/124414dmm5ji0uiub0shss.jpg.thumb.jpg')#设置输入框默认显示信息
entry_urls = tk.Entry(win, textvariable=var_urls_path)
entry_urls.place(x=250, y=89, width=300, height=30,)

#文件名输入框
var_file_name = tk.StringVar()
entry_file_name = tk.Entry(win, textvariable=var_file_name)
entry_file_name.place(x=250, y=149, height=30)

#文件名输入框默认信息设置
var_file_name.set('test')
entry_file_name = tk.Entry(win, textvariable=var_file_name)
entry_file_name.place(x=250, y=149, width=300, height=30,)
#print(entry_file_name)


#自定义爬取指令函数的操作
def start_paqu():
    url_file_geshi = tk.StringVar()
    header = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36'}
    url_info = entry_urls.get()
    root_path = os.getcwd()
    url_file_name = url_info.split("/")[-1]
    url_file_geshi = "." + url_info.split(".")[-1]
    file_name =(entry_file_name.get() + url_file_geshi)
    try:
        r=requests.get(url_info, headers=header)
        r.raise_for_status()
        r.encoding=r.apparent_encoding
        s_or_f=messagebox.askyesno(title="恭喜",message="爬取成功是否保存？")
        if s_or_f:
            if not os.path.exists(root_path):
                os.mkdir(root_path)
            if not os.path.exists(file_name):
                    with open(file_name, "wb") as f:
                        f.write(r.content)
                        f.close()
                        def file_or_start():
                            def start_root_file():
                                os.system("start  explorer %s" % file_name )
                            tk.messagebox.showinfo(title="保存成功", message="是否立即打开文件", command=start_root_file)

                        tk.messagebox.showinfo(title="恭喜", message=file_name+"文件保存成功", command=file_or_start)
            else:
                    tk.messagebox.showerror(title="错误提示",message="文件已经存在,是否打开查看", command=file_or_start)

    except:
                    messagebox.showerror(title="温馨提示",message="爬取失败")








#自定义注册指令函数的操作
def start_file():
    pass

def info():
    tk.messagebox.showinfo(title="温馨提示", message="你瞅啥")




#############################主界面三个按钮#############################################################################
#创建爬取及打开按钮                                                                                                    #
bt_login = tk.Button(win, text="爬取单张", font=('宋体',15), command=start_paqu).place(x=60,y=250)                     #
bt_register = tk.Button(win, text="爬取全站", font=('宋体',15), command=start_file).place(x=260,y=250)
#创建退出按钮
bt_exit = tk.Button(win, text="退出", font=("宋体",15),command=exit).place(x=500,y=250)                                #
########################################################################################################################





#创建作者信息
bt_info = tk.Button(win, text="By：刘祖有的个人毕业设计", font=("宋体",15),command=info).place(x=250,y=350)






#进入消息循环
win.mainloop()
